Identification of content in an electronic document

ABSTRACT

In some embodiments, a method includes receiving an electronic document that comprises a plurality of sections. The method includes marking the plurality of sections as a content section or a non-content section using an attribute of the sections that includes at least one of a width of the section, a density of the plurality of hyperlinks in the section, a size of a font of text in the section and whether a title of the electronic document overlaps with text in the section. The method also includes storing the marking of the plurality of sections of the electronic document in a machine-readable medium.

COPYRIGHT

A portion of the disclosure of this document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software, data, and/or screenshots which may be described below and in the drawings that form a part of this document: Copyright© 2007, eBay Incorporated. All Rights Reserved.

BACKGROUND

The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.

A number of applications process the content of a web page for a number of different uses. One such application is a search engine. Search engines enable searches for data across various Web sites and associated pages that are hosted on any device on an accessible network (e.g., the Internet and networks coupled thereto). Search engines (as well as other applications) generally only need to process the actual content of a web page. Such applications do not need to process non-content of a web page (such as advertisements, navigation panels, copyrights notices, etc.).

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are provided by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:

FIG. 1 is a network diagram of a system for identification of content and non-content sections in an electronic document (e.g., a web page), according to example embodiments.

FIG. 2 is a web page having content and non-content blocks, according to example embodiments.

FIG. 3 is a diagram of a method for determining whether a block is a content block or a non-content block in a web page, according to example embodiments.

FIG. 4 is a diagram of a method for determining whether a block of a web page includes content or non-content based on comparison of attributes across blocks, according to example embodiments.

FIG. 5 is a diagram of a method for determining whether a block of a web page includes content or non-content based on comparison of attributes across blocks, according to some other example embodiments.

FIG. 6 is a diagram of a method for determining whether a block of a web page includes content or non-content based on borders of adjacent blocks, according to some example embodiments.

FIG. 7 illustrates a computer that may be used for identification of content and non-content sections in an electronic document, according to example embodiments.

DETAILED DESCRIPTION

Methods, apparatus and systems for identification of content in an electronic document are described. In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.

Example embodiments are used to process sections of any type of electronic document to identify the content therein. The sections of an electronic document may be identified as including content or non-content. In the examples described herein, the electronic document is illustrated as a web page. However, embodiments may process any type of electronic document. For the purposes of this specification, an electronic document may be any type of electronic content for use in electronic form. Examples of an electronic document may comprise a web page, a editable document (such as a Microsoft® Word document), Portable Document Format (“PDF”) which may be viewed and modified in one of the ADOBE® ACROBAT® programs, page-descriptive electronic content, hypertext document, a markup language document, declarative specification document (such as for example a hypertext markup language HTML or XML document), a tillable form or data describing application graphical user interface. Further, examples herein are to identify the blocks of an electronic document (e.g., a web page) as having content or non-content. However, embodiments may be used to identify any section or part of an electronic document.

In some embodiments, the sections (e.g., blocks) of an electronic document are identified as content or non-content sections. To illustrate, a web page typically contains information blocks. Apart from the content blocks, the web page may include a number of non-content blocks (such as, for example, navigation panels, banners, advertisements, copyright notices, privacy notices, etc). Content for a web page may include a review or description of a product, a news story, etc. Such web pages may include one or more non-content blocks. For a web page having news, the non-content may include advertisements and navigation panels on the top or sides, copyright notices at the bottom, etc. These non-content blocks are useful for viewers of the web page. For example, the navigation panels and search blocks assist the viewers in navigating to other web pages or locating particular data on the web site, respectively. These non-content blocks are also useful for the owners of the web pages because of revenue (e.g., advertisements), notification (e.g., copyright notice), etc.

Example embodiments process the blocks of data of a web page to identify the content blocks and the non-content blocks. Various applications may use the differentiation between content and non-content blocks. For example, this differentiation of the blocks may be used by search engines. Search engines that process the content to enable searching of the web pages can be hindered by the non-content in the web pages. Specifically, search engines typically index the actual content in the web pages that is used for subsequent searches. Search engines generally do not need to process non-content data of a web page. Therefore, search engines may be able to parse the content blocks (located in accordance with example embodiments) of a web page (rather than both content and non-content blocks).

Example embodiments may be used for other applications. For example, the search engines may also use example embodiments to rank the relevance of web pages for a given search. Example embodiments may also be used to rank the content blocks of a web page relative to a search. Additionally, example embodiments may be used to determine which part of a web page to display. For example, some devices (such as Personal Digital Assistants (PDAs)) have limited bandwidth and/or display space. Accordingly, some embodiments may be used to display just the content blocks, the most important content block, etc.

FIG. 1 is a network diagram of a system for identification of content and non-content sections in an electronic document (e.g., a web page), according to example embodiments. A system 100 comprises a server 105 and servers 106A-106N that are coupled together through a network 104.

The server 105 comprises a search engine 102, a identification module 101 and a machine-readable medium 120. The identification module 101 may receive and process web pages from different web sites. The identification module 101 may identify the blocks of a web page as either content blocks or non-content blocks. In example embodiments, the identification module 101 performs this identification based on different properties of the block and the data therein. A more detailed description of these operations is set forth below. The search engine 102 may use the output from the operations of the identification module 101 to index the web pages for subsequent searches of such pages.

The machine-readable medium 120 may store various input and output for the operations performed by the identification module 101 and the search engine 102. For example, the machine-readable medium 120 may store web pages from various web sites, the identification of the content blocks and the non-content blocks for a web page that are a result of the processing by the identification module 101, the indexes of the web pages that are a result of the processing by the search engine 102, etc.

The server 106A may store on a machine-readable medium a number of web pages 125A-125N that may be for one to N number of web sites. The server 106N may store on a machine-readable medium a number of web pages 126A-126N that may be for one to N number of web sites. Such web pages may be processed by the search engine 102 and the identification module 101.

The system 100 may comprise any number of servers. While described such that the identification module 101, the search engine 102 and the associated data are in a same server, embodiments are not so limited. Alternatively or in addition, such components may be distributed across any number of network storage devices/servers.

The network communication may be any combination of wired and wireless communication. In some embodiments, the network communication may be based on one or more communication protocols (e.g., HyperText Transfer Protocol (HTTP), HTTP Secured (HTTPS), Real Time Messaging Protocol (RTMP), Real Time Messaging Protocol Secured/SSL (RTMPS) etc.). The identification module 101 and the search engine 102 may be software, hardware, firmware or a combination thereof for executing operations, according to some embodiments.

FIG. 2 is a web page having content and non-content blocks, according to example embodiments. A web page 200 may be representative of a web page that is typical for a web site that provides news. However, embodiments may be performed on any type of web page (e.g., news, product reviews, data about an organization, etc.). The web page 200 includes two content blocks (content block A 202 and content block B 204). The content block A 202 and the content block B 204 may contain a new story, editorial, etc. The web page 200 also includes a number of non-content blocks. A non-content block 206 and a non-content block 220 are blocks for advertisements. Non-content blocks 208, 210, 212, 214 and 216 are parts of a navigation panel that enables a view of the web page 200 to navigate to a different web page on the web site. In this example, the navigation panel enables the user to traverse other types of news. Selection of the non-content block 208 enables a viewer to return to the home web page for the web site. Selection of the non-content block 210 enables a viewer to view a web page related to world news. Selection of the non-content block 212 enables a viewer to view a web page related to news for the United States. Selection of the non-content block 214 enables a viewer to view a web page related to sports. Selection of the non-content block 216 enables a viewer to view a web page related to politics.

A non-content block 218 is a block of the web page 200 that enables viewers to enter a search for data on this particular web site, for data across the Internet, etc. A non-content block 222 is block that displays the copyright notice for the web page 200. A non-content block 224 is a block that provides a hyperlink to a help page.

Operations, according to example embodiments, are now described. In certain embodiments, the operations are performed by instructions residing on machine-readable media (e.g., software), while in other embodiments, the methods are performed by hardware or other logic (e.g., digital logic). FIG. 3 is a diagram of a method 300 for determining whether a block is a content block or a non-content block in a web page, according to example embodiments. The method 300 is described with reference to FIGS. 1-2. In some embodiments, the method 300 is performed by the identification module 101. In example embodiments, the operations of the method 300 may be performed independent or dependent from the operations of the search engine 102. For example, the search engine 102 may initiate the operations of the method 300 to determine the content blocks within one or more web pages. The search engine 102 may then process these content blocks to index the data therein for subsequent searches. Alternatively, the operations of the method 300 may be performed without initiation by the search engine 102. Other applications may use the determination of the content blocks for a web page (as described above). The method 300 commences at block 302.

At block 302, the identification module 101 receives a web page that includes a number of blocks. The blocks of the web page may be content and/or non-content blocks. While described as processing one web page, example embodiments may be performed on any number of pages. The method 300 continues at block 304.

At block 304, the identification module 101 determines whether the last block for the web page has been processed. The identification module 101 determines whether the blocks in the web page have been processed to determine whether the blocks include content or non-content. If the last block has been processed, the operations of the method 300 are complete. Otherwise control continues at block 306.

At block 306, the identification module 101 selects an unprocessed block on the web page for processing. The method 300 continues at block 308.

At block 308, the identification module 101 determines a width of the selected block. In example embodiments, a width of the block is indicative of whether the block includes content or non-content. In some embodiments, if the width of the block is less than X % of the width of the page, the block may be considered not likely to include content. In some embodiments, X equals 20, 25, 30, 15, 10, etc. With reference to FIG. 2 to illustrate, the blocks along the sides of the web page 200 (such as blocks 218 and 220) and the blocks in the navigation panel (blocks 208, 210, 212, 214 and 216) generally have a small width relative to the width of the web page. As further described below, based on a number of factors including a width of the block, the identification module 101 marks a block as having content or non-content. In some embodiments, the identification module 101 assigns a value to a block based on its width. In particular, if a width of a block is greater than X %, the block is likely to include content. In some embodiments, if a width of the block is greater than X %, the block is assigned a value of ‘+1’. If a width of the block is less than or equal to X %, the block is assigned a value of ‘−1’. Thus, in some embodiments, the block is assigned a value (e.g., ‘+1’ or ‘−1’) based on its width. As further described below, this assigned values are used to score the blocks to determine whether or not the blocks include content. The method 300 continues at block 310.

At block 310, the identification module 101 determines a density of hyperlinks in the selected block. In some embodiments, the identification module 101 determines the density of hyperlinks based on a ratio of data that are not hyperlinks (considered content) to data that are hyperlinks (considered non-content). In some embodiments, if this ratio of content to non-content is less than N %, the block is considered not likely to include content. In some embodiments, N equals 20, 25, 30, 15, 10, etc. Thus, in some embodiments, the block is assigned a value (e.g., ‘+1’ or ‘−1’) based on its density of hyperlinks. The method 300 continues at block 312.

At block 312, the identification module 101 determines a size of the font for text in the block. In some embodiments, the size of the font for text in a block may be the majority size of the font for text therein. In some embodiments, the majority size of the font for text may be the weighted average of the text in the block. The identification module 101 may compare the majority size of the font for text in the block to the majority size of the font of the text in the web page. The majority of the size of the font of the text in the web page may be defined as the weighted average of the size of the font of the text in the web page. In example embodiments, if the size of the font of the block is significantly different from the size of the font of the web page, the block may be less likely to include content. For example, if the size of the font of the block is significantly smaller, the block may be the copyright or privacy notices at the bottom of the web page. Further, if the size of the font of the block is significantly larger, the block may be advertising. Thus, if the difference between the font size of the text in the block and the font size of the text in the web page is beyond a threshold, the block is not considered to include content.

Alternatively or in addition, the identification module 101 may determine a size of the font for text in the block, independent of a size of the font for text in the web page. In example embodiments, the size of the font is indicative of whether the block includes content or non-content. In some embodiments, the larger the size of the font the more likely that the block includes non-content. For example, if the size of the font for a majority of the data is greater than M point, the block may be considered not likely to include content. In some embodiments, M equals 10, 11, 12, 14, 8 or 9. In some embodiments, if the size of the font is within a given range, the block is more likely to include content. For example, if the size of the font is large, the block may be an advertisement. If the size of the font is small, the block may be a copyright notice, privacy notice, help button, etc. In example embodiments, if the size of the font for the majority of the data is within a range, the block may be considered likely to include content. In some embodiments, the range of the size of the font for the block likely to include content includes 8-10 point, 8-11 point, 8-10 point, 8-14 point, 9-10 point, 9-11 point, 9-12 point, 9-14 point, 10-11 point, 10-12 point, 10-14 point, 11-12 point, 11-14 point, 12-14 point, etc. Thus, in some embodiments, the block is assigned a value (e.g., ‘+1’ or ‘−1’, as described above) based on the size of the font. The method 300 continues at block 314.

At block 314, the identification module 101 determines the amount of overlap between a title of the web page and the content of the block. In some embodiments, web pages generally have a title. For example, for a web page including a product review, the title may be the name of the product. In some embodiments, if the title of the web page is within the block, the block is more likely to include content. In particular, the title of the web page is generally not within panel buttons, advertisements, copyright notice, etc. In some embodiments, if the entire title verbatim is within the block, the block is more likely to include content. In some embodiments, if a part of the title is within the block, the block is more likely to include content. For example, if all or some descriptive words are within the block, the block is more likely to include content. To illustrate, non-descriptive words may include “the”, “a”, “an” “or”, etc. In some embodiments, non-descriptive words may be identified using a stop word dictionary (which is generated by considered the frequency of the word in a particular language). Examples of stop words in English include “the”, “a”, “an” “or”, etc. because of their frequent use in the language. Thus, if a word is not within the stop word dictionary, such word may be considered descriptive. Alternatively or in addition, a word may be considered descriptive if the number of letters in the word exceeds a threshold. For example, if the number of letters is greater than 3, the word is considered descriptive. Thus, in some embodiments, the block is assigned a value (e.g., ‘+1’ or ‘−1’) based on whether the title of the web page is included within the block. The method 300 continues at block 316.

At block 316, the identification module 101 marks the block as a content block or non-content block using any combination of the width of the block, the density of the hyperlinks in the block, the size of the font for the majority of text in the block and the overlap of the title of the web page and the content of the block. In some embodiments, all of these different attributes are used to make the determination. Alternatively, one or less than all of these attributes is used to make the determination. In some embodiments, the identification module 101 may assign a score to the block based on some or all of these attributes. If the score exceeds a threshold, the block is considered to have content. For example, if the width exceeds a threshold, the block receives a +1. Otherwise, the block receives a −1. The identification module may similarly assign +1 and −1 for the other attributes being considered. In some embodiments, only one attribute is used. Accordingly, if the given attribute for the block is indicative of the block having content, the identification module marks the block as a content block. The method 300 continues at block 304. Once the blocks of the web page have been processed, the operations of the method 300 are complete.

Embodiments are not limited to the attributes for a block described above. For example, some embodiments may determine whether a block includes content based on its position on the web page. In some embodiments, a block is more likely to include content the closer that such block is to the center of the web page (horizontally, vertically or a combination thereof).

In some embodiments, additional checks are performed to determine if the block includes content. In some embodiments, attributes of a block are compared across multiple blocks of a web page. In some embodiments, it is assumed that content blocks have similar or same attributes. Accordingly in some embodiments, if attributes across adjacent blocks are similar (wherein one block is marked to include content and the other block is marked to not include content), both blocks are considered to include content. FIGS. 4-6 illustrate different operations for this check of attributes across multiple blocks.

FIG. 4 is a diagram of a method 400 for determining whether a block of a web page includes content or non-content based on comparison of attributes across blocks, according to example embodiments. The method 400 is described with reference to FIGS. 1-2. In some embodiments, the method 400 is performed by the identification module 101. In some embodiments, the method uses the output of the method 300 of FIG. 3 and is thus performed after such operations. In particular, the operations of the method 400 may serve as an additional check on whether the block of a web page includes content or non-content.

In example embodiments, the operations of the method 400 may be performed independent or dependent from the operations of the search engine 102. For example, the search engine 102 may initiate the operations of the method 400 to determine the content blocks within one or more web pages. The search engine 102 may then process these content blocks to index the data therein for subsequent searches. Alternatively or in addition, the operations of the method 400 may be performed without initiation by the search engine 102. Other applications may use the determination of the content blocks for a web page (as described above). The method 400 commences at block 402.

At block 402, the identification module 101 receives blocks of a web page. In some embodiments, such blocks are received from the output of the operations of the method 300. However, embodiments are not so limited, as operations of the method 400 may receive the blocks from the output of other types of algorithms (that identify blocks has including or not including content). In particular, in some embodiments, the operations of the method 400 may be performed independent of the operations of the method 300. The method 300 continues at block 406.

At block 406, the identification module 101 determines whether the blocks of the web page have been processed. As further described below, in some embodiments, an attribute for two blocks (one marked to include content and the other not marked to include content) is compared. If the attributes are the same, the block marked not to include content is changed to include content. For example, assume that block A and block B are adjacent to each other. Block A may have been marked to include content. However, block B may be marked to not include content because the width of the block is too small. If block A and block B are similar in terms of font size, density of hyperlinks, etc., block B may include content. For example, for consumer review of a product, the web page may include a table with multiple columns that may be representative of blocks in a web page. The table may include a large-width column showing the actual text of the review and a small-width column showing the name of the author, rating of the author, etc. The small-width column is part of the content and should be marked as having content. Accordingly, blocks that are adjacent to each other (wherein one is marked to include content and the other is not marked to include content) may be compared before the operations of the method 400 are complete. If the blocks are processed, the operations of the method 400 are complete. Otherwise, the method 300 continues at block 408.

At block 408, the identification module 101 selects two adjacent blocks (wherein one is marked to include content and the other is not marked to include content). These blocks may or may not have yet been compared to a different block. For example, block A (that is adjacent to block B) may be processed again to be compared to block C (that is also adjacent to block A). The method 300 continues at block 410.

At block 410, the identification module 101 determines whether the two selected blocks have a same background color. In some embodiments, it is assumed that blocks having content in a given web page have a same background color. Accordingly, if two adjacent blocks (wherein one is marked to include content and the other is marked to not include content) have a same background color, in some embodiments, it is assumed that the one marked to not include content has not been marked correctly. This non-content block is then changed to be marked to include content. If the background colors are the same, the method 300 continues at block 412. Otherwise, the method 300 continues at block 406.

At block 412, the identification module 101 changes the block marked to not include content to be marked to include content. In particular in some embodiments, because the background color of adjacent blocks (wherein one is marked to include content and the other is marked to not include content) is the same, both blocks may be marked to include content. The method 300 continues at block 406. Accordingly, the operations of the method 400 continue until the blocks are processed.

Alternatively or in addition, other attributes may be checked across adjacent blocks to determine if the blocks include content. FIG. 5 is a diagram of a method 500 for determining whether a block of a web page includes content or non-content based on comparison of attributes across blocks, according to some other example embodiments. The method 500 is described with reference to FIGS. 1-2. In some embodiments, the method 500 is performed by the identification module 101. In some embodiments, the method uses the output of the method 300 of FIG. 3 and is thus performed after such operations. In particular, the operations of the method 500 may serve as an additional check on whether the block of a web page includes content or non-content.

In example embodiments, the operations of the method 500 may be performed independent or dependent from the operations of the search engine 102. For example, the search engine 102 may initiate the operations of the method 500 to determine the content blocks within one or more web pages. The search engine 102 may then process these content blocks to index the data therein for subsequent searches. Alternatively or in addition, the operations of the method 500 may be performed without initiation by the search engine 102. Other applications may use the determination of the content blocks for a web page (as described above). The method 500 commences at block 502.

At block 502, the identification module 101 receives blocks of a web page. In some embodiments, such blocks are received from the output of the operations of the method 300. However, embodiments are not so limited, as operations of the method 400 may receive the blocks from the output of other types of algorithms (that identify blocks has including or not including content). In particular, in some embodiments, the operations of the method 400 may be performed independent of the operations of the method 300. The method 300 continues at block 506.

At block 506, the identification module 101 determines whether the blocks of the web page have been processed. As described above, in some embodiments, an attribute for two blocks (one marked to include content and the other not marked to include content) is compared. If the attributes are the same, the block marked not to include content is changed to include content. Accordingly, blocks that are adjacent to each other (wherein one is marked to include content and the other is not marked to include content) may be compared before the operations of the method 500 are complete. If the blocks are processed, the operations of the method 500 are complete. Otherwise, the method 300 continues at block 508.

At block 508, the identification module 101 selects two adjacent blocks (wherein one is marked to include content and the other is not marked to include content). These blocks may or may not have yet been compared to a different block. For example, block A (that is adjacent to block B) may be processed again to be compared to block C (that is also adjacent to block A). The method 300 continues at block 510.

At block 510, the identification module 101 determines whether the two selected blocks have a same font size. In some embodiments, it is assumed that blocks having content in a given web page have a same font size. While described based on a comparison of the size of the font, in some embodiments other attributes of the content may be used. For example, the identification module 101 may compare the color of the text, whether the text is bolded, italized, underlined, etc. Accordingly, if two adjacent blocks (wherein one is marked to include content and the other is marked to not include content) have a same font size, in some embodiments, it is assumed that the one marked to not include content has not been marked correctly. This non-content block is then changed to be marked to include content. If the font sizes are the same, the method 300 continues at block 512. Otherwise, the method 300 continues at block 506.

At block 512, the identification module 101 changes the block marked to not include content to be marked to include content. In particular in some embodiments, because the font size of adjacent blocks (wherein one is marked to include content and the other is marked to not include content) is the same, both blocks may be marked to include content. The method 300 continues at block 406. Accordingly, the operations of the method 400 continue until the blocks are processed.

Alternatively or in addition, other attributes relative to multiple content blocks may be checked to determine if the blocks include content. FIG. 6 is a diagram of a method 500 for determining whether a block of a web page includes content or non-content based on borders of adjacent blocks, according to some example embodiments. The method 600 is described with reference to FIGS. 1-2. In some embodiments, the method 600 is performed by the identification module 101. In some embodiments, the method uses the output of the method 300 of FIG. 3 and is thus performed after such operations. In particular, the operations of the method 600 may serve as an additional check on whether the block of a web page includes content or non-content.

In example embodiments, the operations of the method 600 may be performed independent or dependent from the operations of the search engine 102. For example, the search engine 102 may initiate the operations of the method 600 to determine the content blocks within one or more web pages. The search engine 102 may then process these content blocks to index the data therein for subsequent searches. Alternatively or in addition, the operations of the method 600 may be performed without initiation by the search engine 102. Other applications may use the determination of the content blocks for a web page (as described above). The method 600 commences at block 602.

At block 602, the identification module 101 receives blocks of a web page. In some embodiments, such blocks are received from the output of the operations of the method 300. However, embodiments are not so limited, as operations of the method 400 may receive the blocks from the output of other types of algorithms (that identify blocks has including or not including content). In particular, in some embodiments, the operations of the method 400 may be performed independent of the operations of the method 300. The method 300 continues at block 606.

At block 606, the identification module 101 determines whether the blocks of the web page have been processed. As further described below, in some embodiments, a determination is made regarding a border between adjacent blocks (one marked to include content and the other not marked to include content). Accordingly, blocks that are adjacent to each other (wherein one is marked to include content and the other is not marked to include content) may be processed before the operations of the method 600 are complete. If the blocks are processed, the operations of the method 600 are complete. Otherwise, the method 300 continues at block 608.

At block 608, the identification module 101 selects two adjacent blocks (wherein one is marked to include content and the other is not marked to include content). These blocks may or may not have yet been compared to a different block. For example, block A (that is adjacent to block B) may be processed again to be compared to block C (that is also adjacent to block A). The method 300 continues at block 610.

At block 610, the identification module 101 determines whether the two selected adjacent blocks share a side that includes a visual border. For example, the shared side may include a bolded line between the two blocks. In some embodiments, it is assumed that if two adjacent blocks have a visual border, only one of the two blocks include content. If the shared side does not include a visual border, the method 300 continues at block 606. Otherwise, the method 300 continues at block 612.

At block 612, the identification module 101 changes one of the selected content blocks (that is less likely to include content) to be marked as a non-content block. In some embodiments, the identification module 101 uses the score assigned to the content blocks while the blocks were initially marked as having content (in the operations of the method 300) (as described above for the description of the method 400 of FIG. 4). The method 300 continues at block 606. Accordingly, the operations of the method 600 continue until all content blocks are processed.

Embodiments are not limited to the attributes across two adjacent blocks described above. For example, some embodiments may determine that two adjacent blocks both include content based on the height of the blocks. In some embodiments, if two adjacent blocks are the same or similar height, both blocks are marked to include content.

FIGS. 4-6 illustrate operations for checking whether blocks include content. These operations may be performed independent of each other. Alternatively, these operations may be performed in any combination. For example, the operations of FIGS. 4-6 may be performed together, the operations of FIG. 4-5 may be performed together, the operations of FIGS. 4 and 6 may be performed together, etc.

FIGS. 3-6 have been described such that various attributes of blocks of a web page or attributes of the web page are compared to thresholds (e.g., width, size of font, etc.). In some embodiments, an optimization approach is used to locate the content blocks of a web page. The blocks that include content may be identified relative to the other blocks of the web page. The blocks may be sorted according to their likelihood of being content. Accordingly, the likelihood that a block includes content could be approximated by a function of the value of the different attributes considered. For example, a likelihood measure that a block includes content could be a summation, product or other mathematical function based on the width of the block, density of hyperlinks in the block, and overlap of the title of the web page in the block.

A detailed block diagram of an example computer environment, according to some embodiments, is now described. In particular, FIG. 7 illustrates a computer that may be used for identification of content and non-content sections in an electronic document, according to example embodiments. A computer system 700 may be representative of one of the devices, the servers, etc.

As illustrated in FIG. 7, the computer system 700 comprises processor(s) 702. The computer system 700 also includes a memory unit 730, processor bus 722, and Input/Output controller hub (ICH) 724. The processor(s) 702, memory unit 730, and ICH 724 are coupled to the processor bus 722. The processor(s) 702 may comprise any suitable processor architecture. The computer system 700 may comprise one, two, three, or more processors, any of which may execute a set of instructions in accordance with embodiments of the invention.

The memory unit 730 may store data and/or instructions, and may comprise any suitable memory, such as a dynamic random access memory (DRAM). The computer system 700 also includes IDE drive(s) 708 and/or other suitable storage devices. A graphics controller 704 controls the display of information on a display device 706, according to some embodiments of the invention.

The input/output controller hub (ICH) 724 provides an interface to I/O devices or peripheral components for the computer system 700. The ICH 724 may comprise any suitable interface controller to provide for any suitable communication link to the processor(s) 702, memory unit 730 and/or to any suitable device or component in communication with the ICH 724. For one embodiment of the invention, the ICH 724 provides suitable arbitration and buffering for each interface.

For some embodiments of the invention, the ICH 724 provides an interface to one or more suitable integrated drive electronics (IDE) drives 708, such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive, or to suitable universal serial bus (USB) devices through one or more USB ports 710. For one embodiment, the ICH 724 also provides an interface to a keyboard 712, a mouse 714, a CD-ROM drive 718, one or more suitable devices through one or more Firewire ports 716. For one embodiment of the invention, the ICH 724 also provides a network interface 720 though which the computer system 700 can communicate with other computers and/or devices.

In some embodiments, the computer system 700 includes a machine-readable medium that stores a set of instructions (e.g., software) embodying any one, or all, of the methodologies for described herein. Furthermore, software may reside, completely or at least partially, within memory unit 730 and/or within the processor(s) 702.

In the description, numerous specific details such as logic implementations, opcodes, means to specify operands, resource partitioning/sharing/duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that embodiments of the invention may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the embodiments of the invention. Those of ordinary skill in the art, with the included descriptions will be able to implement appropriate functionality without undue experimentation.

References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.

Embodiments of the invention include features, methods or processes that may be embodied within machine-executable instructions provided by a machine-readable medium. A machine-readable medium includes any mechanism which provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). In example embodiments, a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.).

Such instructions are utilized to cause a general or special purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention. Alternatively, the features or operations of embodiments of the invention are performed by specific hardware components which contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components. Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.

In view of the wide variety of permutations to the embodiments described herein, this detailed description is intended to be illustrative only, and should not be taken as limiting the scope of the invention. What is claimed as the invention, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto. Therefore, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. 

1. A method comprising: receiving an electronic document that comprises a plurality of sections; marking the plurality of sections as a content section or a non-content section using an attribute of the sections that includes at least one of a width of the section, a density of the plurality of hyperlinks in the section, a size of a font of text in the section, and whether a title of the electronic document overlaps with text in the section; comparing a value of a different attribute of two adjacent sections of the plurality of sections, a first section of the two adjacent sections being marked to include content and a second section of the two adjacent sections being marked not to include content; changing a mark of the second section from a mark not to include content to a mark to include content in response to the comparison resulting in a determination that the value of the different attribute of the first section is the same as the value of the different attribute of the second section; and storing the mark of the plurality of sections of the electronic document in a machine-readable medium.
 2. The method of claim 1, the different attribute comprising a background color.
 3. The method of claim 1, the different attribute comprising a font size.
 4. The method of claim 1, the plurality of sections including a first section adjacent to a second section, the first section being marked to include content and the second section being marked not to include content, the method further comprising changing the mark of the second section to a mark to include content, in response to a determination that the first section and the second section share a side that does not include a visual border.
 5. The method of claim 1, further comprising performing a search of electronic documents the search comprising searching the data in one or more identified content sections of the electronic document.
 6. The method of claim 5, the search not including searching the data in one or more identified non-content sections of the electronic document.
 7. The method of claim 1, marking the plurality of sections comprising marking the plurality of sections as a content section in response to a determination that a width of the section is greater than X percent of a width of the electronic document.
 8. The method of claim 7, wherein X equals
 20. 9. The method of claim 1, the electronic document comprising an electronic document.
 10. A non-transitory machine-readable medium including instructions which when executed by a machine causes the machine to perform operations comprising: receiving a web page that comprises a plurality of blocks; and marking the plurality of blocks as a content block or a non-content block based on a value of an attribute of the blocks, the plurality of blocks including a first block adjacent to a second block, the first block being marked as a content block and the second block being marked as a non-content block; comparing a value of a different attribute for the first block to a value of the different attribute for the second block; changing a mark of the second block to a content block in response to a determination that the value of the different attribute of the first block is the same as the value of the different attribute of the second block; and storing the mark of the plurality of blocks of the web page in a machine-readable medium.
 11. The machine-readable medium of claim 10, the different attribute comprising at least one of a width of the block, a density of the plurality of hyperlinks in the block, a size of a font of text in the block and whether a title of the web page is within data of the block.
 12. The machine-readable medium of claim 10, marking the plurality of blocks comprising marking the plurality of blocks as content blocks in response to a determination that a ratio of non-hyperlink content to hyperlink content is greater than N percent.
 13. The machine-readable medium of claim 12, wherein N equals
 20. 14. The machine-readable medium of claim 10, the different attribute comprising a background color.
 15. The machine-readable medium of claim 10, the different attribute comprising a font size.
 16. A system comprising: a hardware implemented identification module to mark a plurality of sections of a electronic document as having content or having non-content using an attribute of the sections that includes at least one of a width of the section, a density of the plurality of hyperlinks in the section, a size of a font of text in the section and whether a title of the electronic document overlaps with text in the section, the plurality of sections comprising a first section adjacent to a second section, the first section being marked as having content and the second section being marked as having non-content, the identification module operating to change a mark of the second section to having content based on a comparison of a different attribute of the first section and the different attribute of the second section; and a search engine to parse the sections having content to index for a subsequent search.
 17. The system of claim 16, the different attribute comprising a background color.
 18. The system of claim 16, the different attribute comprising a text color.
 19. The system of claim 16, the different attribute comprising a font size.
 20. The system of claim 16, wherein the search engine is to not parse the sections having non-content to index for the subsequent search.
 21. The system of claim 16, the identification module being to mark the plurality of sections as having content in response to a determination that a font size for a majority of text is less than M point.
 22. The system of claim 21, wherein M equals
 10. 